﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="AdvancedCompartmentMappingSchema" targetNamespace="http://schemas.microsoft.com/dsltools/AdvancedCompartmentMapping" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/AdvancedCompartmentMapping" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- ExampleModel -->
  <xsd:element name="exampleModel" type="ExampleModel" />
  <xsd:complexType name="ExampleModel">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: ExampleModelHasBaseDatum -->
      <xsd:element name="baseDatum" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of ExampleModelHasBaseDatum</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="exampleModelHasBaseDatum">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from ExampleModelHasBaseDatum needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="baseData" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- dslVersion -->
    <xsd:attribute name="dslVersion" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- ExampleModel Moniker -->
  <xsd:element name="exampleModelMoniker" type="ExampleModelMoniker" />
  <xsd:complexType name="ExampleModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ExampleModel instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- BaseData -->
  <xsd:element name="baseData" abstract="true" type="BaseData" />
  <xsd:complexType name="BaseData" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: BaseDataReferencesTargetBaseDatum -->
      <xsd:element name="targetBaseDatum" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of BaseDataReferencesTargetBaseDatum</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="baseDataReferencesTargetBaseDatum" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>[Instance of BaseDataReferencesTargetBaseDatum needs to be serialized in full-form]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <!-- BaseData Moniker -->
  <xsd:element name="baseDataMoniker" abstract="true" type="BaseDataMoniker" />
  <xsd:complexType name="BaseDataMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for BaseData instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- ComplexData -->
  <xsd:element name="complexData" type="ComplexData" substitutionGroup="baseData" />
  <xsd:complexType name="ComplexData">
    <xsd:complexContent>
      <xsd:extension base="BaseData">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: ComplexDataHasInputs -->
          <xsd:element name="inputs" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ComplexDataHasInputs</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="complexDataHasInputs">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from ComplexDataHasInputs needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="input" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: ComplexDataHasOutputs -->
          <xsd:element name="outputs" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ComplexDataHasOutputs</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="complexDataHasOutputs">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from ComplexDataHasOutputs needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="output" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ComplexData Moniker -->
  <xsd:element name="complexDataMoniker" type="ComplexDataMoniker" substitutionGroup="baseDataMoniker" />
  <xsd:complexType name="ComplexDataMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ComplexData instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="BaseDataMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- SimpleData -->
  <xsd:element name="simpleData" type="SimpleData" substitutionGroup="baseData" />
  <xsd:complexType name="SimpleData">
    <xsd:complexContent>
      <xsd:extension base="BaseData">
        <!-- Property: Kind -->
        <xsd:attribute name="kind" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- SimpleData Moniker -->
  <xsd:element name="simpleDataMoniker" type="SimpleDataMoniker" substitutionGroup="baseDataMoniker" />
  <xsd:complexType name="SimpleDataMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for SimpleData instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="BaseDataMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Entry -->
  <xsd:element name="entry" abstract="true" type="Entry" />
  <xsd:complexType name="Entry" abstract="true" >
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <!-- Property: Guid -->
    <xsd:attribute name="guid" type="xsd:string" />
  </xsd:complexType>
  
  <!-- Entry Moniker -->
  <xsd:element name="entryMoniker" abstract="true" type="EntryMoniker" />
  <xsd:complexType name="EntryMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Entry instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Input -->
  <xsd:element name="input" type="Input" substitutionGroup="entry" />
  <xsd:complexType name="Input">
    <xsd:complexContent>
      <xsd:extension base="Entry">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Input Moniker -->
  <xsd:element name="inputMoniker" type="InputMoniker" substitutionGroup="entryMoniker" />
  <xsd:complexType name="InputMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Input instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="EntryMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Output -->
  <xsd:element name="output" type="Output" substitutionGroup="entry" />
  <xsd:complexType name="Output">
    <xsd:complexContent>
      <xsd:extension base="Entry">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Output Moniker -->
  <xsd:element name="outputMoniker" type="OutputMoniker" substitutionGroup="entryMoniker" />
  <xsd:complexType name="OutputMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Output instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="EntryMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ExampleModelHasBaseDatum -->
  <xsd:element name="exampleModelHasBaseDatum" abstract="true" type="ExampleModelHasBaseDatum" />
  <xsd:complexType name="ExampleModelHasBaseDatum" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end BaseData -->
      <xsd:element ref="baseData" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ExampleModelHasBaseDatum Moniker -->
  <xsd:element name="exampleModelHasBaseDatumMoniker" abstract="true" type="ExampleModelHasBaseDatumMoniker" />
  <xsd:complexType name="ExampleModelHasBaseDatumMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ExampleModelHasBaseDatum instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- BaseDataReferencesTargetBaseDatum -->
  <xsd:element name="baseDataReferencesTargetBaseDatum" type="BaseDataReferencesTargetBaseDatum" />
  <xsd:complexType name="BaseDataReferencesTargetBaseDatum">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end BaseData -->
      <xsd:element ref="baseDataMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: fromEntry -->
    <xsd:attribute name="fromEntry" type="xsd:string" />
    <!-- Property: toEntry -->
    <xsd:attribute name="toEntry" type="xsd:string" />
  </xsd:complexType>
  
  <!-- BaseDataReferencesTargetBaseDatum Moniker -->
  <xsd:element name="baseDataReferencesTargetBaseDatumMoniker" type="BaseDataReferencesTargetBaseDatumMoniker" />
  <xsd:complexType name="BaseDataReferencesTargetBaseDatumMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for BaseDataReferencesTargetBaseDatum instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- ComplexDataHasInputs -->
  <xsd:element name="complexDataHasInputs" abstract="true" type="ComplexDataHasInputs" />
  <xsd:complexType name="ComplexDataHasInputs" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Input -->
      <xsd:element ref="input" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ComplexDataHasInputs Moniker -->
  <xsd:element name="complexDataHasInputsMoniker" abstract="true" type="ComplexDataHasInputsMoniker" />
  <xsd:complexType name="ComplexDataHasInputsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ComplexDataHasInputs instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- ComplexDataHasOutputs -->
  <xsd:element name="complexDataHasOutputs" abstract="true" type="ComplexDataHasOutputs" />
  <xsd:complexType name="ComplexDataHasOutputs" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Output -->
      <xsd:element ref="output" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ComplexDataHasOutputs Moniker -->
  <xsd:element name="complexDataHasOutputsMoniker" abstract="true" type="ComplexDataHasOutputsMoniker" />
  <xsd:complexType name="ComplexDataHasOutputsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ComplexDataHasOutputs instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
</xsd:schema>

